Modern computer networks implement sophisticated protocols to ensure reliable transport of data between data processing systems. One of the most well accepted and widely implemented protocol sets is the Transmission Control Protocol/Internet Protocol (TCP/IP). TCP/IP is built on IP. Whereas IP defines an unreliable connectionless packet delivery service, TCP introduces network services that implement reliable stream delivery.
TCP/IP software is layered. In other words, TCP/IP software is organized into conceptual layers on top of physical hardware. In most models, the TCP/IP software includes four layers. The names for the layers vary, but one set of names often used specifies that the “Application” (first) layer resides on top of the “Transport” (second) layer that resides on top of the “Network” (third) layer that resides on top of the “Data Link” (fourth) layer. The Data Link layer resides, finally, on top of the physical hardware. The physical hardware is sometimes considered a fifth layer.
The Data Link layer includes the TCP/IP software that receives and transmits IP datagrams over the physical hardware. To that end, the Data Link layer may include device drivers that provide interfaces to the physical hardware. The device drivers are responsible for accepting data from the Network layer and transmitting the data over the physical hardware, as well as receiving data from the physical hardware and forwarding the data to the Network layer for processing.
The Network layer accepts Transport layer requests to send data packets to a specific machine. In this regard, the Network layer is responsible for encapsulating the packets into IP datagrams and forwarding the datagrams to the Data Link layer for delivery. The Network layer also accepts data that the Data Link layer received over the physical hardware. In response, the Network layer checks the validity of the data and uses a routing algorithm to determine if the data should be forwarded to a different machine, or delivered to the local machine. IP processing occurs at the Network layer.
The Transport layer provides network communication between programs. In addition to regulating data flow to a program, the transport layer may also ensure that the data arrives without error and in sequence. For that reason, the transport layer expects the receiver to send back acknowledgements and to have the sender retransmit lost packets. The transport layer also divides the data to be transmitted into packets for transmission. TCP processing occurs at the Transport layer.
Efficient communication between the Network layer and the Data Link layer and between the Network layer and the Transport layer is critical for maximizing network throughput. However, in the past, TCP/IP protocol suite implementations have placed unduly restrictive limitations on the exchange of data between the Data Link layer and the Network layer and between the Network layer and the Transport layer. In general, substantial overhead is required to pass data between layers. As a result, network throughput is reduced.
Therefore, a need has long existed for more efficiently communicating data between network protocol layers in order to overcome the problems noted above and others previously experienced.